package com.ruoyi.web.utils;

import com.ruoyi.common.utils.StringUtils;

import java.util.Arrays;
import java.util.Optional;

public enum SmsTemplateEnum {
	/**
	 * 验证码
	 */
	VERIFICATION_CODE(
			"验证码发送",
			"瑞念信",
			"SMS_241800088",
			"code"
	),
	/**
	 * 生日祝福
	 */
	BIRTHDAY_WISHES(
			"生日祝福-2022",
			"悠悠的云里有淡淡的诗，淡淡的诗里有绵绵的喜悦，绵绵的喜悦里有瑞念信的祝福，亲爱的${user},祝你无事绊心弦，所念皆如愿。生逢俱如意，日沐南风吹。快事长伴友，乐衔月下杯。生日快乐！",
			"瑞念信",
					"SMS_242581536",
			"user"
	),
	/**
	 * 入司周年祝福-2022-通用
	 */
	COMPANY_ANNIVERSARY_2022_COMMON(
			"入司周年祝福-2022",
					"Dear ${user}，今天是我们相识${year}周年纪念日,感谢你的付出！ 因为有你，我们才变得更加卓越！明天的我们继续上路，携手共筑美好未来~",
					"瑞念信",
					"SMS_241346144",
					"user",
					"year"
	),
	/**
	 * 入司一周年
	 */
	COMPANY_ANNIVERSARY_1(
			"入司周年祝福-一周年",
			"回首过去，从陌生到熟悉，从彷徨到笃定，不变的是恒心，不忘的是初心。我们已经相伴一年，过去一年的成绩大家有目共睹，希望以后的每一年瑞念信都能与你一起乘风破浪，共济沧海！",
			"瑞念信",
					"SMS_241351630"
	),
	/**
	 * 入司两周年
	 */
	COMPANY_ANNIVERSARY_2(
			"入司周年祝福-两周年",
					"两年的共同见证和彼此成长，你见过我惨淡素颜的狼狈模样，我也见过你凌晨三点的坚持与疲惫；褪去初入职场的青涩，却依然对梦想怀有敬畏，不妥协、不放弃，因为有你的热爱，才有瑞念信的现在，亲爱的${user}，两周年快乐！",
			"瑞念信",
					"SMS_241351631",
			"user"
	),
	/**
	 * 入司三周年
	 */
	COMPANY_ANNIVERSARY_3(
			"入司周年祝福-三周年",
			"如果每一个年份都有意义，那么在瑞念信第三个年头主题曲就叫做：因为热爱，所以坚守。在等待这一天的到来之前，经历了1095天，26280小时。从羸弱幼苗长成参天大树，从蹒跚学步到茁壮成长。这三年，每一份美好都值得期许，每一份温暖都直达心底，每一份热爱都值得坚守。亲爱的${user}，瑞念信这三年有你有幸，下一个三年有幸有你！",
			"瑞念信",
			"SMS_241351632",
			"user"
	);



	SmsTemplateEnum(String name ,String content, String signName,String templateCode,String... checks){
		this.name = name;
		this.content = content;
		this.signName = signName;
		this.templateCode = templateCode;
		this.checks = checks;
	}

	SmsTemplateEnum(String name ,String content,String templateCode,String[] checks){
		this.name = name;
		this.content = content;
		this.signName = "瑞念信";
		this.templateCode = templateCode;
		this.checks = checks;
	}

	/**
	 * 模板名称
	 */
	private String name;

	/**
	 * 签名 默认使用 瑞念信
	 */
	private String signName;

	/**
	 * 模板code
	 */
	private String templateCode;

	/**
	 * 短信内容
	 */
	private String content;

	/**
	 * 参数校验规则
	 */
	private String[] checks;

	public String[] getChecks(){
		return this.checks;
	}

	public String getName(){
		return this.name;
	}
	public String getContent(){
		return this.content;
	}

	public String getSignName(){
		return this.signName;
	}

	public String getTemplateCode(){
		return this.templateCode;
	}

	@Override
	public String toString(){
		return String.format("name:%s,signName:%s,templateCode:%s",this.name,this.signName,this.templateCode);
	}

	/**
	 * 根据模板编码查询模板名称
	 * @param code
	 * @return
	 */
	public static String getNameByCode(String code){
		SmsTemplateEnum[] enums = SmsTemplateEnum.values();
		Optional<SmsTemplateEnum> first = Arrays.asList(enums).stream().filter(
				e -> StringUtils.equals(code, e.templateCode)
		).findFirst();
		if(first.isPresent()){
			return first.get().name;
		}
		return "";
	}

}
